home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDGGGGEEEEBBBBAAAALLLL((((3333FFFF)))) DDDDGGGGEEEEBBBBAAAALLLL((((3333FFFF))))
-
-
-
- NNNNAAAAMMMMEEEE
- DGEBAL - balance a general real matrix A
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- SUBROUTINE DGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
-
- CHARACTER JOB
-
- INTEGER IHI, ILO, INFO, LDA, N
-
- DOUBLE PRECISION A( LDA, * ), SCALE( * )
-
- PPPPUUUURRRRPPPPOOOOSSSSEEEE
- DGEBAL balances a general real matrix A. This involves, first, permuting
- A by a similarity transformation to isolate eigenvalues in the first 1 to
- ILO-1 and last IHI+1 to N elements on the diagonal; and second, applying
- a diagonal similarity transformation to rows and columns ILO to IHI to
- make the rows and columns as close in norm as possible. Both steps are
- optional.
-
- Balancing may reduce the 1-norm of the matrix, and improve the accuracy
- of the computed eigenvalues and/or eigenvectors.
-
-
- AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
- JOB (input) CHARACTER*1
- Specifies the operations to be performed on A:
- = 'N': none: simply set ILO = 1, IHI = N, SCALE(I) = 1.0 for i
- = 1,...,N; = 'P': permute only;
- = 'S': scale only;
- = 'B': both permute and scale.
-
- N (input) INTEGER
- The order of the matrix A. N >= 0.
-
- A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
- On entry, the input matrix A. On exit, A is overwritten by the
- balanced matrix. If JOB = 'N', A is not referenced. See Further
- Details. LDA (input) INTEGER The leading dimension of the
- array A. LDA >= max(1,N).
-
- ILO (output) INTEGER
- IHI (output) INTEGER ILO and IHI are set to integers such
- that on exit A(i,j) = 0 if i > j and j = 1,...,ILO-1 or I =
- IHI+1,...,N. If JOB = 'N' or 'S', ILO = 1 and IHI = N.
-
- SCALE (output) DOUBLE PRECISION array, dimension (N)
- Details of the permutations and scaling factors applied to A. If
- P(j) is the index of the row and column interchanged with row and
- column j and D(j) is the scaling factor applied to row and column
- j, then SCALE(j) = P(j) for j = 1,...,ILO-1 = D(j) for j =
- ILO,...,IHI = P(j) for j = IHI+1,...,N. The order in which
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- DDDDGGGGEEEEBBBBAAAALLLL((((3333FFFF)))) DDDDGGGGEEEEBBBBAAAALLLL((((3333FFFF))))
-
-
-
- the interchanges are made is N to IHI+1, then 1 to ILO-1.
-
- INFO (output) INTEGER
- = 0: successful exit.
- < 0: if INFO = -i, the i-th argument had an illegal value.
-
- FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
- The permutations consist of row and column interchanges which put the
- matrix in the form
-
- ( T1 X Y )
- P A P = ( 0 B Z )
- ( 0 0 T2 )
-
- where T1 and T2 are upper triangular matrices whose eigenvalues lie along
- the diagonal. The column indices ILO and IHI mark the starting and
- ending columns of the submatrix B. Balancing consists of applying a
- diagonal similarity transformation inv(D) * B * D to make the 1-norms of
- each row of B and its corresponding column nearly equal. The output
- matrix is
-
- ( T1 X*D Y )
- ( 0 inv(D)*B*D inv(D)*Z ).
- ( 0 0 T2 )
-
- Information about the permutations P and the diagonal matrix D is
- returned in the vector SCALE.
-
- This subroutine is based on the EISPACK routine BALANC.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-